<?php

/**
 * 模型层基类 trait基类
 *
 * @author Jack.Zhu<25282538@qq.com>
 * @method string self::db('one', ’$where = '', $bind)
 */
trait Model
{

    /**
     * 表名
     * @var string
     */
    static $tbl = null;
    /**
     * 自增ID生成器 配置
     * @var array
     */
    static $iPk = array(); // jump => [[10000000000,40000000000]]

    /**
     * 初始化
     * @return $this
     */
    static function init()
    {
        // var_dump('hell',self::ClassName(), '<br/>');
        $cls = '_' . static::cls();
        var_dump(__TRAIT__, __CLASS__,$cls,get_called_class(),static::class,"<br/>");
        if (!isset($_ENV[$cls])) {
            $_ENV[$cls] = new static();
            static::_init();
        }
        if (!static::$tbl) {
            static::$tbl = preg_replace('/([A-Z])/', '.$1', __CLASS__);
            static::$tbl = trim(strtolower(static::$tbl), '.');
        }
        return $_ENV[$cls];
    }

    /**
     * 自定义初始化（方法重载时用）
     */
    static function _init()
    {
    }

    static function cls()
    {
        return __CLASS__;
    }

    static function className()
    {
        return get_called_class();
    }
}



